import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Parameter;

/**
 * 利用class对象获取成员变量信息
 */
public class ReflexDemo3 {
    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("Student");

        // 获取所有公共成员变量
        Field[] field = clazz.getFields();
        System.out.println(field);
        // 获取单个公共成员变量
        Field name = clazz.getField("name");
        System.out.println(name);
        // 获取全部成员变量
        Field[] declaredFields = clazz.getDeclaredFields();
        System.out.println(declaredFields);
        // 获取单个成员变量[包含私有]
        Field age = clazz.getDeclaredField("age");
        System.out.println(age);


        // 获取成员修饰符
        System.out.println(age.getModifiers());
        // 获取成员变量名
        System.out.println(age.getName());
        // 获取成员数据类型
        System.out.println(age.getType());

        // 获取成员的值
        Student student = new Student("Jixer", 12);
        age.setAccessible(true);
        int age11 = (int) age.get(student);
        System.out.println(age11);

        // 修改成员的值
        age.set(student, 30);
        System.out.println(age.get(student));


    }
}
